package dlc.scraping;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import dlc.persistencia.BaseDatos;
import java.util.Calendar;

public class Scraping extends Thread {

    private BaseDatos base;
    private int contador = 0;
    private int contadorBD = 2;
    private String urlRaiz;
    private long tiempoComienzo = 0;
    private int cantidadDeLinkALeer=0;

    public Scraping(String url, long t1, int cl) {
        base = new BaseDatos(1);
        this.urlRaiz = url;
        this.tiempoComienzo = t1;
        this.cantidadDeLinkALeer=cl;
    }

    public void run() {
        base.agregarURL(this.urlRaiz);
        contador++;

        this.obtenerLinks(this.urlRaiz);
//TODO WHILE
        while (true) {
            if (contador <= cantidadDeLinkALeer) {
                String url2 = base.retornarURL(contadorBD);
                this.obtenerLinks(url2);
                this.contadorBD++;
            } else {
                break;
            }
        }
        Calendar cal= Calendar.getInstance();
        long tiempoFinal = cal.getTimeInMillis();
        
        long tiempoMilisegundos=(((tiempoFinal-tiempoComienzo)));
        float tiemposegunods=tiempoMilisegundos/1000;
        float tiempoMinutos=tiemposegunods/60;
        System.out.println("Proceso de Scraping terminado - Duración en minutos: "+tiempoMinutos);
    }

    private void obtenerLinks(String url) {
        try {
            Document doc = Jsoup.connect(url).get();

            //Limitar el contenido a la parte del texto central.
            Element content = doc.getElementById("mw-content-text");
//TODO XPATH EXPRESSION
            Elements elementos = content.children();

            for (Element elemento : elementos) {
                if (elemento.tagName().compareTo("p") == 0) {
                    Elements links = elemento.select("a[href]");

                    for (Element link : links) {
                        String l = "";
                        System.out.println(link.attr("abs:href"));
                        l = link.attr("abs:href");
                        if (l.compareTo("") != 0) {
                            if (this.base.buscarURL(l) == false) {
                                if(contador <= cantidadDeLinkALeer)
                                {
                                    this.base.agregarURL(l);
                                    this.contador++;
                                }
                                else
                                {
                                    return;
                                }
                                
                            }
                        }
                    }
                }
            }
        } catch (Exception ex) {
            System.out.println("Excepcion al abrir la URL en Scraping!!!!");
            System.out.println(ex.toString());
        }
    }
}
